package pe.edu.upc.dsd.jjjar.recarga;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import com.google.gson.Gson;


@Path("/recarga")
public class RecargaService {

	@GET
	@Path("/recargar/{nrotarjeta}/{monto}")
	@Produces("text/plain")
	public String recargar(@PathParam("nrotarjeta") String nrotarjeta, @PathParam("monto") Double monto) {
		
		System.out.println("RECARGA TARJETA:");
		System.out.println("NRO TARJETA: " + nrotarjeta);
		System.out.println("MONTO: " + monto);
		
		int nroOperacion = 0;
		Recarga operacion = new Recarga();
		synchronized (this) {
			BaseDatos.lastOperacion++;
			nroOperacion = BaseDatos.lastOperacion;
			operacion.setNroTarjeta(nrotarjeta);
			operacion.setMonto(monto);
			BaseDatos.porconfirmar.put(nroOperacion, operacion);
			System.out.println("OPERACION GENERADA: " + nroOperacion);
		}
		
		Respuesta respuesta = new Respuesta();
		respuesta.setEstado("OK");
		respuesta.setNroOperacion(nroOperacion);
		
		Gson gson = new Gson();
		String json = gson.toJson(respuesta);
		System.out.println("Respuesta:" + json);
		return json;
		
	}

	@GET
	@Path("/confirmar/{nrocelular}/{contrasena}/{nrooperacion}")
	@Produces("text/plain")
	public String confirmar(@PathParam("nrocelular") String nrocelular,
			@PathParam("contrasena") String contrasena, @PathParam("nrooperacion") Integer nrooperacion) {
		
		System.out.println("CONFIRMAR RECARGA TARJETA:");
		System.out.println("NRO CELULAR: " + nrocelular);
		System.out.println("FRASE: " + contrasena);
		System.out.println("OPERACION: " + nrooperacion);
		
		Recarga recargaPendiente = BaseDatos.porconfirmar.get(nrooperacion);
		Respuesta respuesta = new Respuesta();
		Gson gson = new Gson();
		
		if(recargaPendiente==null){
			respuesta.setEstado("ER");
			respuesta.setMensaje("La recarga ha caducado");
			String json = gson.toJson(respuesta);
			System.out.println("Respuesta: " + json);
			return json;
		}
		
		BaseDatos.operaciones.put(nrooperacion, recargaPendiente);
		BaseDatos.porconfirmar.remove(nrooperacion);
		
		respuesta.setEstado("OK");
		respuesta.setMensaje("La recarga se ha realizado correctamente.");
		String json = gson.toJson(respuesta);
		System.out.println("Respuesta: " + json);
		return json;
		
	}



}
